home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / include / signal.h < prev    next >
C/C++ Source or Header  |  1991-10-24  |  4KB  |  135 lines

  1. /*
  2.  * Copyright (c) 1982, 1986 Regents of the University of California.
  3.  * All rights reserved.  The Berkeley software License Agreement
  4.  * specifies the terms and conditions for redistribution.
  5.  *
  6.  *    @(#)signal.h    7.3 (Berkeley) 5/14/88
  7.  * $Header: /sprite/src/lib/include/RCS/signal.h,v 1.14 91/10/24 17:49:43 rab Exp $
  8.  */
  9.  
  10. #ifndef _SIGNAL
  11. #define _SIGNAL
  12.  
  13. #include <cfuncproto.h>
  14. #include <machSignal.h>
  15.  
  16. #ifndef    NSIG
  17. #define NSIG    32
  18. #endif
  19.  
  20. #define    SIGHUP    1    /* hangup */
  21. #define    SIGINT    2    /* interrupt */
  22. #define    SIGQUIT    3    /* quit */
  23. #define    SIGILL    4    /* illegal instruction (not reset when caught) */
  24. #define    SIGTRAP    5    /* trace trap (not reset when caught) */
  25. #define    SIGIOT    6    /* IOT instruction */
  26. #define    SIGABRT    SIGIOT    /* compatibility */
  27. #define    SIGEMT    7    /* EMT instruction */
  28. #define    SIGFPE    8    /* floating point exception */
  29. #define    SIGKILL    9    /* kill (cannot be caught or ignored) */
  30. #define    SIGBUS    10    /* bus error */
  31. #define    SIGSEGV    11    /* segmentation violation */
  32. #define    SIGSYS    12    /* bad argument to system call */
  33. #define    SIGPIPE    13    /* write on a pipe with no one to read it */
  34. #define    SIGALRM    14    /* alarm clock */
  35. #define    SIGTERM    15    /* software termination signal from kill */
  36. #define    SIGURG    16    /* urgent condition on IO channel */
  37. #define    SIGSTOP    17    /* sendable stop signal not from tty */
  38. #define    SIGTSTP    18    /* stop signal from tty */
  39. #define    SIGCONT    19    /* continue a stopped process */
  40. #define    SIGCHLD    20    /* to parent on child stop or exit */
  41. #define    SIGCLD    SIGCHLD    /* compatibility */
  42. #define    SIGTTIN    21    /* to readers pgrp upon background tty read */
  43. #define    SIGTTOU    22    /* like TTIN for output if (tp->t_local<OSTOP) */
  44. #define    SIGIO    23    /* input/output possible signal */
  45. #define    SIGXCPU    24    /* exceeded CPU time limit */
  46. #define    SIGXFSZ    25    /* exceeded file size limit */
  47. #define    SIGVTALRM 26    /* virtual time alarm */
  48. #define    SIGPROF    27    /* profiling time alarm */
  49. #define SIGWINCH 28    /* window size changes */
  50. #define SIGUSR1 30    /* user defined signal 1 */
  51. #define SIGUSR2 31    /* user defined signal 2 */
  52.  
  53. /*
  54.  * Special Sprite signals:
  55.  */
  56.  
  57. #define SIGDEBUG 3    /* debug (same as quit in Sprite) */
  58. #define SIGMIG    10    /* migrate process */
  59. #define SIGMIGHOME 29    /* migrate process back to home node */
  60.  
  61. #ifndef KERNEL
  62. /* 
  63.  * This is taken more or less from K&R 2nd ed., section B9.  Recall 
  64.  * that signal() returns the previous handler.
  65.  */
  66. extern void (*signal _ARGS_((int sig,
  67.                  void (*handler)(int sig)))) _ARGS_((int sig));
  68.  
  69. extern int sigblock _ARGS_ ((int mask));
  70. extern int sigpause _ARGS_ ((int mask));
  71. extern int sigsetmask _ARGS_ ((int mask));
  72. #endif
  73.  
  74. /*
  75.  * Signal vector "template" used in sigvec call.
  76.  */
  77. struct    sigvec {
  78.     void    (*sv_handler)();    /* signal handler */
  79.     int    sv_mask;        /* signal mask to apply */
  80.     int    sv_flags;        /* see signal options below */
  81. };
  82. #define SV_ONSTACK    0x0001    /* take signal on signal stack */
  83. #define SV_INTERRUPT    0x0002    /* do not restart system on signal return */
  84. #define sv_onstack sv_flags    /* isn't compatibility wonderful! */
  85.  
  86. /*
  87.  * Structure used in sigstack call.
  88.  */
  89. struct    sigstack {
  90.     char    *ss_sp;            /* signal stack pointer */
  91.     int    ss_onstack;        /* current status */
  92. };
  93.  
  94. #if 0
  95. /*
  96.  * This declaration has been moved to the machine dependent file
  97.  * machSignal.h
  98.  */
  99.  
  100. /*
  101.  * Information pushed on stack when a signal is delivered.
  102.  * This is used by the kernel to restore state following
  103.  * execution of the signal handler.  On some systems it is also made
  104.  * available to the handler to allow it to properly restore state if a
  105.  * non-standard exit is performed.  However, user programs should not
  106.  * rely on having access to this information.
  107.  */
  108. struct    sigcontext {
  109.     int    sc_onstack;        /* sigstack state to restore */
  110.     int    sc_mask;        /* signal mask to restore */
  111.     int    sc_sp;            /* sp to restore */
  112.     int    sc_fp;            /* fp to restore */
  113.     int    sc_ap;            /* ap to restore */
  114.     int    sc_pc;            /* pc to restore */
  115.     int    sc_ps;            /* psl to restore */
  116. };
  117. #endif
  118.  
  119. #define    BADSIG        (void (*)())-1
  120. #define    SIG_DFL        (void (*)())0
  121. #define    SIG_IGN        (void (*)())1
  122.  
  123. #ifdef KERNEL
  124. #define    SIG_CATCH    (void (*)())2
  125. #define    SIG_HOLD    (void (*)())3
  126. #endif
  127.  
  128. /*
  129.  * Macro for converting signal number to a mask suitable for
  130.  * sigblock().
  131.  */
  132. #define sigmask(m)    (1 << ((m)-1))
  133.  
  134. #endif /* _SIGNAL */
  135.